<?php

/*
 * 苏州活动的接口
 * 
 * 主要功能有：
 * 1. 获取用户的资料，手机通过mid查询是否是学生
 * 
 * 2. 上传照片接口
 * 
 * 3. 生成报名记录
 * 
 * 4. 获取分享地址
 * 
 * 
 * 
 */
namespace Api\Controller\V3;
use Think\Controller;
class AcshiyaojuController extends CommonController{
    
    /*
     * 获取城市列表
     */
    public function get_cities() {
        $DB = M("acshiyaoju_open_area");
        $map['isvalid'] = 1;
        
        $res = $DB->where($map)->join("LEFT JOIN __REGIONS__ ON __REGIONS__.code = __ACSHIYAOJU_OPEN_AREA__.region_code")->select();
        
//        print_r($DB->getLastSql());
        
        $count =$DB->where($map)->count();
        
        if(!empty($res))
        {
           if($count==1)
            {
                $more_data['item_count']=1;
                $this->json_output($res,"","",$more_data);
            }
            else
            {
                $more_data['item_count']=$count;
                $this->json_output($res,"","",$more_data);
            } 
        }
        else
        {
            $res['err']=1;
            $res['msg']="数据为空".ACTION_NAME;
            echo json_encode($res);
            
        }
    
        
        
        
        
    }
    
    
    /*
     * 获取用户的基本资料
     * 
     */
    
    public function get_member_info() {
        $mid = I('get.mid');
        $password=I('get.password');
        $chk_usr = $this->chk_user($mid, $password);
        
        if($chk_usr)
        {
//            从 fd_acshiyaoju_member_info 表获取资料
            $DB = M("acshiyaoju_member_info");
            $map['mid']=$mid;
            
            $res = $DB->where($map)->find();
            
            if(!empty($res))
            {
                $this->json_output($res);
            }
            else
            {
                //                增加信息
                $data['region_code'] = 0;
                $data['mid']=$mid;
                $data['ctime'] = I("server.REQUEST_TIME");
                
                
                $id = $DB->add($data);
                
                if($id)
                {
                    $res = $DB->find($id);
                    $this->json_output($res);
                }
                else
                {
                    $res['err']=1;
                    $res['msg']="保存出错";
                    echo json_encode($res);
                }
                
                
            }
            
        }
        
        else
        {
            $res['err']=1;
            $res['msg']="用户登录账户或密码有误".ACTION_NAME;
            echo json_encode($res);
        }
        
    }
    
    
    /*
     * 更新用户的资料
     */
    public function update_member_info() {
        $mid = I('get.mid');
        $password=I('get.password');
        $chk_usr = $this->chk_user($mid, $password);
        
        if($chk_usr)
        {
            $region_code = I("get.region_code");
            
            $DB = M("acshiyaoju_member_info");
            
            $map['mid']=$mid;
            
            $res = $DB->where($map)->find();
            
            if(!empty($res))
            {
                $DB->id = $res['id'];
                $DB->region_code = $region_code;
                $DB->prize_left_count = 0;

                if($DB->save())
                {
                    $this->json_output($res['id']);
                }
                else
                {
                    $res['err']=1;
                    $res['msg']="保存出错";
                    echo json_encode($res);
                }
            }
            else
            {
//                增加信息
                $data['region_code'] = $region_code;
                $data['mid']=$mid;
                $data['ctime'] = I("server.REQUEST_TIME");
                
                
                $id = $DB->add($data);
                
                if($id)
                {
                    $this->json_output($id);
                }
                else
                {
                    $res['err']=1;
                    $res['msg']="保存出错";
                    echo json_encode($res);
                }
                
                
                
            }
            
            
            
            
            
        }
        
        else
        {
            $res['err']=1;
            $res['msg']="用户登录账户或密码有误".ACTION_NAME;
            echo json_encode($res);
        }
    }




    /*
     * 获取用户资料
     */
    public function xws_member_info() {
        $mid = I('get.mid');
        $password=I('get.password');
        $chk_usr = $this->chk_user($mid, $password);
        
        if($chk_usr)
        {
            //获取之前考试登记的学生资料
//            空的情况处理
//            不为空的情况处理
            
            $DB = M("acshiyaoju_member_info");
            $map['mid']=$mid;
            
            $res = $DB->where($map)->find();
            
            if(empty($res))
            {
                $res['err']=1;
                $res['msg']="非正式参赛用户";
                echo json_encode($res);
            }
            else
            {
                $res['mclass']=$res['class'];
                
                unset($res['class']);
                $this->json_output($res);
            }
            
        }
        else
        {
            $res['err']=1;
            $res['msg']="用户登录账户或密码有误".ACTION_NAME;
            echo json_encode($res);
        }
    }
    
    
    
    /*
     * 获取投票的列表
     * 按照排名来排序
     * 
     * 
     * 1. 获取投票人的学校和班级记录
     * 2. 在vote 记录找出来，排序
     * 
     */
    public function xws_vote_list() {
        $mid = I("get.mid");
        $pagecount = I("get.pagecount");
        $keyword = I("get.keyword");
        $type= I("get.type");
        
        
        
        $member_info = M("acshiyaoju_member_info")->where(array('mid'=>$mid))->find();
        
        /*
         * 
         *  留着对 排名进行一个区分，type =0 班级内排名， type=1 学校内排名
         * 
         */
        $DB = M("acshiyaoju_xws_vote");
        
        
        
        if(empty($type))
        {
            $type=0;
            
            $map['schoolid']=$member_info['schoolid'];
            $map['grade_id']=$member_info['grade_id'];
            $map['class_id']=$member_info['class_id'];
        }
        else
        {
            
            $map['schoolid']=$member_info['schoolid'];
        
            
        }
        
        if(empty($keyword))
        {
           
           if($pagecount>0)
            {
                //分页数据
               $res = $DB->where($map)->order("vote_num desc,ctime")->limit($pagecount*10,10)->select();
               
               
               
               foreach ($res as $key => $value) {
                    $res[$key]['rank']=$pagecount*10+$key+1;
                }
            }
            else
            {
                //默认首页
                
                $res = $DB->where($map)->order("vote_num desc,ctime")->limit(10)->select();
                
                foreach ($res as $key => $value) {
                    $res[$key]['rank']=$key+1;
                }


                

            } 
        }
        else
        {
            //关键字搜索
//            判断关键字是数字还是名字
            if(is_numeric($keyword))
            {
                if($pagecount>0)
                {
                   $res=""; 
                }
                else
                {
                    $map['id']=$keyword;
                    $res = $DB->where($map)->select(); 
                }
                
            }
            else{
                if($pagecount>0)
                {
                   $res=""; 
                }
                else
                {
                    $map['vote_name']=array("like","%$keyword%");
                    $res =$DB->where($map)->select();
                }
                
                
            }
            
        }
        
        /*
        * 参与人数
        * 投票数量
        * 浏览数量
        * 用户是否参加了
        */
//       $data['join_count'] = 100;
//       $data['vote_count']=1000;
//       $data['view_count'] = 10000;
       $data = $this->_get_statistics_data();
       $data['vote_id']=  $this->_get_member_vote_id($mid);
       

       $this->json_output($res,"","",$data);
        
    }
    
    /*
     * 计算
     * * 参与人数
        * 投票数量
        * 浏览数量
     */
    private function _get_statistics_data()
    {
        $data['join_count']= M("acshiyaoju_xws_vote")->count();
        $data['vote_count']=M("acshiyaoju_xws_vote_log")->count();
        $data['view_count'] = M("vote_setting")->where(array('keyword'=>'sz_xws_pv'))->getField('keyvalue');
        
        return $data;
    }


    /*
     * 获取用户的报名id
     */
    private function _get_member_vote_id($mid)
    {
        $DB = M("acshiyaoju_xws_vote");
        $map['mid']=$mid;
        
        $res= $DB->where($map)->find();
        if(!empty($res))
        {
            return $res['id'];
        }
        else
        {
            return 0;
        }
    }


    /*
     * 查看投票选项详情
     * 
     * 
     * 
     */
    public function xws_vote_detail() {
        $mid = I('get.mid');
        $password=I('get.password');
        $id = I("get.id");
        $chk_usr = $this->chk_user($mid, $password);
        
        if($chk_usr)
        {
            $DB = M("acshiyaoju_xws_vote");
            $res = $DB->find($id);
            if(!C('debug'))
            {
                $site_domain = C('product_domain');
            }
            else
            {
                $site_domain = C('development_domain');
            }
        
            $res['thumb'] = $res['thumb'];
            
            $this->json_output($res);
            
        }
        else
        {
            $res['err']=1;
            $res['msg']="用户登录账户或密码有误".ACTION_NAME;
            echo json_encode($res);
        }
    }
    
    
   
    
    /*
     * 提交个人资料
     * post
     * 
     */
    public function xws_submit() {
        $mid = I('post.mid');
        $password=I('post.password');
        $chk_usr = $this->chk_user($mid, $password);
        
        if($chk_usr)
        {
//            判断唯一性
            $DB =  M("acshiyaoju_xws_vote");
            
            $res = $DB->where(array('mid'=>$mid))->find();
            if(!empty($res))
            {
                $this->json_output($res['id']);
            }
            else
            {
                            
//            获取用户提交的 图片id，宣言
//                远程获取临时二维码
                
            $thumb_id = I("post.thumb_id");
            
            $thumb_res = M("fundings_image")->find($thumb_id);
            
            $data['thumb'] = $thumb_res['img_url'];
            $data['ctime']=I("server.REQUEST_TIME");
            $data['slogan'] = I("post.slogan");
            $data['vote_name']=  $this->_get_ac_member_name($mid);
            
            $member_addtional = $this->_get_ac_member_additional($mid);
            $data['class_id']=$member_addtional['class_id'];
            $data['grade_id']=$member_addtional['grade_id'];
            $data['schoolid']=$member_addtional['schoolid'];
            
            $data['mid']=$mid;
            
            
            
            
            
            $id = $DB->add($data);
            
            if($id)
            {
                /*
                 * 
                 * 获取二维码有点问题
                 * 
                 *  ？？？？？？？？？？？？？？？？？？？？？？？？？？？？？？？？？？？ 押后解决
                 * 
                 */
                
                /*
                 * 插入临时二维码关联表
                 */
                $t_data['type']=1;
                $t_data['for_id']=$id;
                $t_data['ctime']=I("server.REQUEST_TIME");
                
                $t_id = M("wx_temporary_qr_code_relationship")->add($t_data);
                
//                print_r(M("temporary_qr_code_relationship")->getLastSql());
                
                
//                保存二维码
                
                
                $qrcode_url = $this->create_qrcode($t_id);
                $DB->id = $id;
                $DB->qrcode_url = $qrcode_url;
                $DB->save();
                
                $this->json_output($id);
            }
            else
            {
                $id = 0;
                $this->json_output($id);
            }
            }

            
        }
        else
        {
            $res['err']=1;
            $res['msg']="用户登录账户或密码有误".ACTION_NAME;
            echo json_encode($res);
        }
    }
    
    /*
     * 获取用户的姓名
     */
    private function _get_ac_member_name($mid)
    {
        $DB = M("acshiyaoju_member_info");
        $map['mid']=$mid;
        
        $res = $DB->where($map)->find();
        
        if(empty($res))
        {
            return "";
        }
        else
        {
            return $res['name'];
        }
    }
    
     /*
     * 获取用户的其他资料
     */
    private function _get_ac_member_additional($mid)
    {
        $DB = M("acshiyaoju_member_info");
        $map['mid']=$mid;
        
        $res = $DB->where($map)->find();
        
        return $res;
    }
    

    /*
     * 生成关注的临时二维码
     * 通过 vid（发起投票的选项的id 来生成临时二维码参数，因为临时二维码只支持 数字 ）
     */
    private function create_qrcode($vid) {
        $accessToken = $this->getAccessToken();
        $wxsdk = new \Com\WechatAuth(C('appid'), C('appsecret'),$accessToken);
        
        $qrcode_res = $wxsdk->qrcodeCreate($vid,"",2592000);
//         print_r($qrcode_res); die;
        if(!isset($qrcode_res['errcode'])){

            //不存在 errcode 则说明得到正常返回数据
            $qrcode_img = $this->get_qrcode_by_ticket($qrcode_res['ticket']);
//            print_r($qrcode_img);
            
            return $qrcode_img;
//            $res['qrcode_img'] = $qrcode_img;
//            $res['scene_str'] = $scene_str;
            
        }
        else
        {
            return FALSE;
        }
        
        
    }
    
    /*
     * 保存access_token 的最新状态
     * 
     */
    private function getAccessToken() {

        $jssdk = new \Com\JSSDK(C('appid'), C('appsecret'));
        $access_token = $jssdk->returnAccessToken();
        return $access_token;
    }
    
    /**
     * 通过ticket获取二维码图片
     * 
     */
    private function get_qrcode_by_ticket($ticket){


        $ticket = urlencode($ticket);

        $url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".$ticket;

        return $url;
    }
    
    
     /*
     * 提交图片
     */
    public function xws_image_upload() {
        if(IS_POST)
        {
            $img_url='/Uploads'.'/'.$this->upload($_FILES['image']);
            
            $DB = M("fundings_image");
            $data['img_url']=$img_url;
            
            $id = $DB->add($data);
//            echo $id;
            
            
            $this->json_output($id);
        }
        else
        {
            $this->display();
//            $this->json_output($id);
        }
        
    }
    
    /*
     * 获取分享链接
     */
    public function xws_get_share() {
       $mid = I('get.mid');
       $id = I("get.id");
       $type = I("get.type");
       
       //判断环境
        if(!C('debug'))
        {
            $site_domain = C('product_domain');
        }
        else
        {
            $site_domain = C('development_domain');
        }
        
        
        if($type==1)
        {
            $share['title']="我是苏州市“食品安全小卫士”，点我支持我";
            $share['desc']="我是苏州市“食品安全小卫士”，点我支持我";
            $share['link']=$site_domain.U('M/acshiyaoju/xws_vote_detail',array('id'=>$id));
            $share['imgUrl']=$site_domain."/Public/template/default/img/acsuzhou/share_icon.jpg";    
            
        }
        else
        {
            $share['title']="我是么么哒“食品安全小卫士”，投我一票吧";
            $share['desc']="苏州食药监联合众测天下举办小卫士召集令，一起参与领奖品吧";
            $share['link']=$site_domain.U('M/acshiyaoju/xws_vote_detail',array('id'=>$id));
            $share['imgUrl']=$site_domain."/Public/template/default/img/acsuzhou/share_icon.jpg";
        }
        

        $this->json_output($share, '成功', '失败');
       
    }
    
    
    
    
    
    //文件上传
    private function upload($file)
    {
            $upload = new \Think\Upload();// 实例化上传类
            $upload->maxSize   =     5242880 ;// 设置附件上传大小
            $upload->exts      =     array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
            $upload->savePath  =      'fundings/show/'; // 设置附件上传目录
            // 上传文件 
            $info   =   $upload->uploadOne($file);
            if(!$info)
            {
            // 上传错误提示错误信息    
                    $this->error($upload->getError());
            }
            else
            {
                    // 上传成功 获取上传文件信息    
                    return $info['savepath'].$info['savename'];    
            }
    }
    
    
    /*
     * 抽奖模块
     * 
     * 1. 获取个人的中奖纪录
     * 
     * 2. 参与抽奖
     * 
     * 
     * 
     * 
     * 
     */
    
    
    //获取个人的中奖纪录
    // 返回是否中奖，剩余抽奖次数
    
    public function prize_record()
    {
        
        
        
        $mid = I('get.mid');
        $password=I('get.password');
        $chk_usr = $this->chk_user($mid, $password);
        
        if($chk_usr)
        {
            /*
             * 获取用户的个人信息，得到是否中奖的资料
             * 如果中奖则显示中奖结果
             * 
             */
            
            $DB = M("acshiyaoju_member_info");
            $map['mid']=$mid;
            $res=  $DB->where($map)->find();
            if(!empty($res))
            {
                if($res['is_exam']==1)
                {
                    if($res['is_prize']==1)
                    {
//                        已经中奖
                        $result['activity_err']=0;
                        $result['activity_msg']="中奖情况";
                        $result['is_prize']=$res['is_prize'];
                        $result['prize_left_count']=$res['prize_left_count'];
                        $result['prize_result'] = $this->_get_member_prize_result($mid);
                        $result['ctime'] = $result['prize_result']['ctime'];
                        $result['prize_thumb'] = $result['prize_result']['prize_thumb'];
                    }
                    else
                    {
//                        还没有中奖
                        if($res['prize_left_count']>0)
                        {
                            $result['activity_err']=0;
                            $result['activity_msg']="还没中奖";
                            $result['is_prize']=$res['is_prize'];
                            $result['prize_left_count']=$res['prize_left_count'];
                            $result['prize_result'] = $this->_get_member_prize_result($mid);
                            $result['ctime'] = $result['prize_result']['ctime'];
                            $result['prize_thumb'] = $result['prize_result']['prize_thumb'];
                        }
                        else
                        {
//                            没有抽奖次数了
                            $result['activity_err']=0;
                            $result['activity_msg']="抽奖次数已经用完";
                            $result['is_prize']=$res['is_prize'];
                            $result['prize_left_count']=$res['prize_left_count'];
                            $result['prize_result'] = $this->_get_member_prize_result($mid);
                            $result['ctime'] = $result['prize_result']['ctime'];
                            $result['prize_thumb'] = $result['prize_result']['prize_thumb'];
                            
                            
                            
                        }
                    }
                    
                }
                else
                {
//                    没有考试过
                    $result['activity_err']=2;
                    $result['activity_msg']="没有参加考试";
                }
            }
            else
            {
//                没有报名
                $result['activity_err']=1;
                $result['activity_msg']="尚未报名";
                
            }
            
            $this->json_output($result);
            
        }
        else
        {
            $res['err']=1;
            $res['msg']="用户登录账户或密码有误".ACTION_NAME;
            echo json_encode($res);
        }
    }
    
    /*
     * 获取奖品记录
     */
    private function _get_member_prize_result($mid)
    {
        //判断环境
        if(!C('debug'))
        {
            $site_domain = C('product_domain');
        }
        else
        {
            $site_domain = C('development_domain');
        }
        
        $map['mid']=$mid;
        $map['pid']=array("gt",0);
        $DB = M("acshiyaoju_prize_record");
        
        $res = $DB->where($map)->find();
        
        if(!empty($res))
        {
            //获取奖品内容
            $prize_content = M("acshiyaoju_prize_repository")->find($res['pid']);
            $res['prize_thumb'] = $site_domain.$prize_content['img'];
            
            return $res;
            
        }
        else
        {
            $ress = "";
            return $ress;
        }
    }




    /*
     * 参与抽奖
     */
    public function get_prize() {
        
        //判断环境
        if(!C('debug'))
        {
            $site_domain = C('product_domain');
        }
        else
        {
            $site_domain = C('development_domain');
        }
        
        $mid = I('get.mid');
        $password=I('get.password');
        $chk_usr = $this->chk_user($mid, $password);
        
        if($chk_usr)
        {
            /*
             * 获取个人资料，得到是几年级的学生，查看相同班级的同学，礼品数量是否兑换完了
             *              1. 已经换完，就提示没中奖，减掉次数
             *              2. 没有换完，计算中的概率，看结果
             * 减去中奖次数
             */
            
            $DB_member_info = M("acshiyaoju_member_info");
            $member_info = $DB_member_info->where(array('mid'=>$mid))->find();
            
            
            if($member_info['is_prize']==1)
            {
                //中奖过的情况，直接提示不中奖了
                $result['is_prize']=0;
                $result['prize_msg']="没中奖1";
                if($member_info['prize_left_count']>0)
                {
                    $result['prize_left_count']=$member_info['prize_left_count']-1;
                    $this->_reduce_prize_count($mid);
                    
                    //增加不中奖的记录
                        $this->_add_unwin_prize_record($member_info);
                }
                else
                {
                    $result['prize_left_count']=0;
                }
                
                $this->json_output($result);  
                exit();
                
            }
            
            
            if($member_info['prize_left_count']==0)
            {
                // 没抽奖的次数的情况
                $result['is_prize']=0;
                $result['prize_msg']="没中奖2";
                $result['prize_left_count']=0;
            }
            else
            {
                //还有抽奖次数的情况
                $randmom = rand(0,1);
                if($randmom==1)
                {
                    //几率中奖，还要判断是否还剩余奖品
                    $DB_prize_record = M("acshiyaoju_prize_record");
                    $map_prize_record['schoolid']=$member_info['schoolid'];
                    $map_prize_record['grade_id']=$member_info['grade_id'];
                    $map_prize_record['class_id']=$member_info['class_id'];
                    $map_prize_record['pid']=array("gt",0);
                    
                    $res_prize_record = $DB_prize_record->where($map_prize_record)->select();
                    
                    if(!empty($res_prize_record))
                    {
                        $tmp_prize_got = "(";
                        foreach ($res_prize_record as $key => $value) {
    //                        array_push($tmp_prize_got, $value['pid']);
                            $tmp_prize_got .=$value['pid'].",";
                        }
                        $tmp_prize_got = substr($tmp_prize_got, 0,-1);
                        $tmp_prize_got .=")";
                    }
                    
                    
                    $res_prize_record_count  = count($res_prize_record);
                    
                    if($res_prize_record_count<10)
                    {
//                        还有中奖的机会
                        
                        $DB_acshiyaoju_prize = M("acshiyaoju_prize");
//                        $map_acshiyaoju_prize['grade_id'] = 
                            
                            /*
                             * 测试着，那个奖品的关联关系还是单独算
                             * 
                             * 找出现在中奖的奖品有什么
                             * 
                             * 
                             */
                        
                            $prize_current_map['grade_id']=$member_info['grade_id'];
                            $prize_current_map['school_id']=$member_info['school_id'];
                            
                            $prize_current_res = $DB_acshiyaoju_prize->where($prize_current_map)->select();
                            
//                             echo $DB_acshiyaoju_prize->getLastSql();
//                             echo "<br/>";
                             
                            $tmp_prize_parent=array();
                            
                            foreach ($prize_current_res as $key => $value) {
                                array_push($tmp_prize_parent, $value['id']);
                            }
                            
//                            print_r($tmp_prize_got);
                            
//                            print_r($tmp_prize_parent);
                            $map_prize_children['parent_id']=array("in",$tmp_prize_parent);
                            if(!empty($res_prize_record))
                            {
                                $map_prize_children['id']=array("exp","not in $tmp_prize_got");
                            }
                            
//                            $map_prize_children['_logic']="OR";
                            
                            
                            $res_prize_children = M("acshiyaoju_prize_repository")->where($map_prize_children)->select();
//                            
//                            echo M("acshiyaoju_prize_repository")->getLastSql();
//                            print_r($res_prize_children);
//                            
                            $current_get_prize = $res_prize_children[array_rand($res_prize_children,1)];
                            
//                            print_r($current_get_prize);
//                            
//                            exit();
                            
                            $result['is_prize']=1;
                            $result['prize_msg']="恭喜中奖1";
                            $result['prize_left_count']=$member_info['prize_left_count']-1;
                            $result['prize_thumb']=$site_domain.$current_get_prize['img'];
                            
                            
                            /*
                             * 写入中奖记录
                             */
                            $DB_data_get_prize = M("acshiyaoju_prize_record");
                            $data_get_prize['mid']=$mid;
                            $data_get_prize['pid']=$current_get_prize['id'];
                            $data_get_prize['ctime']=I("server.REQUEST_TIME");
                            $data_get_prize['schoolid']=$member_info['schoolid'];
                            $data_get_prize['grade_id']=$member_info['grade_id'];
                            $data_get_prize['class_id']=$member_info['class_id'];
                            
                            $id_data_get_prize = $DB_data_get_prize->add($data_get_prize);
                            
                            if($id_data_get_prize)
                            {
                                $DB_member_info->id = $member_info['id'];
                                $DB_member_info->is_prize = 1;
                                $DB_member_info->save();  
                            }
                            
                            
                            
                            /*
                             * 测试着，那个奖品的关联关系还是单独算
                             */
                        
                        //抽奖次数减一
                        $this->_reduce_prize_count($mid);
                    }
                    else
                    {
//                        没有奖品了
                        $result['is_prize']=0;
                        $result['prize_msg']="没中奖3";
                        $result['prize_left_count']=$member_info['prize_left_count']-1;
                        
                        //抽奖次数减一
                        $this->_reduce_prize_count($mid);
                        
                        //增加不中奖的记录
                        $this->_add_unwin_prize_record($member_info);
                    }
                }
                else
                {
                    //没中奖，直接返回
                    $result['is_prize']=0;
                    $result['prize_msg']="没中奖4";
                    $result['prize_left_count']=$member_info['prize_left_count']-1;
                    
                    //抽奖次数减一
                        $this->_reduce_prize_count($mid);
                        
                        //增加不中奖的记录
                        $this->_add_unwin_prize_record($member_info);
                }
                
                
            }
            
            
            /*
             * 计算中奖的情况
             */

            
//            if($randmom)
//            {
//                //中奖情况
//                $result['is_prize']=1;
//                $result['prize_msg']="恭喜中奖";
//                $result['prize_left_count']=1;
//                $result['prize_thumb']=$site_domain."/Uploads/acsuzhou/test_prize.jpg";
//            }
//            else
//            {
//                // 没中奖情况
//                $result['is_prize']=0;
//                $result['prize_msg']="没中奖";
//                $result['prize_left_count']=2;
//            }
            

            $this->json_output($result);    
        }
        else
        {
            $res['err']=1;
            $res['msg']="用户登录账户或密码有误".ACTION_NAME;
            echo json_encode($res);
        }
    }
    
    
    /*
     * 减少抽奖的次数
     */
    private function _reduce_prize_count($mid)
    {
        M("acshiyaoju_member_info")->where(array('mid'=>$mid))->setDec("prize_left_count");
    }
    
    /*
     * 增加不中奖的记录
     */
    private function _add_unwin_prize_record($member_info) {
        $data['mid']=$member_info['mid'];
        $data['pid']=0;
        $data['ctime']=I("server.REQUEST_TIME");
        $data['schoolid']=$member_info['schoolid'];
        $data['grade_id']=$member_info['grade_id'];
        $data['class_id']=$member_info['class_id'];
        
        M("acshiyaoju_prize_record")->add($data);
        
        
    }




    /*
 * 经典的概率算法，
 * $proArr是一个预先设置的数组，
 * 假设数组为：array(100,200,300，400)，
 * 开始是从1,1000 这个概率范围内筛选第一个数是否在他的出现概率范围之内， 
 * 如果不在，则将概率空间，也就是k的值减去刚刚的那个数字的概率空间，
 * 在本例当中就是减去100，也就是说第二个数是在1，900这个范围内筛选的。
 * 这样 筛选到最终，总会有一个数满足要求。
 * 就相当于去一个箱子里摸东西，
 * 第一个不是，第二个不是，第三个还不是，那最后一个一定是。
 * 这个算法简单，而且效率非常 高，
 * 关键是这个算法已在我们以前的项目中有应用，尤其是大数据量的项目中效率非常棒。
 */
public function get_rand($proArr) { 
    $result = '';  
    //概率数组的总概率精度 
    $proSum = array_sum($proArr);  
    //概率数组循环 
    foreach ($proArr as $key => $proCur) { 
        $randNum = mt_rand(1, $proSum); 
        if ($randNum <= $proCur) { 
            $result = $key; 
            break; 
        } else { 
            $proSum -= $proCur; 
        } 		
    } 
    unset ($proArr);  
    return $result; 
}

public function test() {
    /*
    * 奖项数组
    * 是一个二维数组，记录了所有本次抽奖的奖项信息，
    * 其中id表示中奖等级，prize表示奖品，v表示中奖概率。
    * 注意其中的v必须为整数，你可以将对应的 奖项的v设置成0，即意味着该奖项抽中的几率是0，
    * 数组中v的总和（基数），基数越大越能体现概率的准确性。
    * 本例中v的总和为100，那么平板电脑对应的 中奖概率就是1%，
    * 如果v的总和是10000，那中奖概率就是万分之一了。
    * 
    */
    
    
   $prize_arr = array( 
       '0' => array('id'=>1,'prize'=>'平板电脑','v'=>1), 
       '1' => array('id'=>2,'prize'=>'数码相机','v'=>5), 
       '2' => array('id'=>3,'prize'=>'音箱设备','v'=>10), 
       '3' => array('id'=>4,'prize'=>'4G优盘','v'=>12), 
       '4' => array('id'=>5,'prize'=>'10Q币','v'=>22), 
       '5' => array('id'=>6,'prize'=>'下次没准就能中哦','v'=>50), 
   ); 
   
   /*
    * 获取所有的奖品清单
    */
//   $DB_prize_setting = M("acshiyaoju_prize");
//   
//   $prize_setting_res = $DB_prize_setting->select();
   

   /*
    * 每次前端页面的请求，PHP循环奖项设置数组，
    * 通过概率计算函数get_rand获取抽中的奖项id。
    * 将中奖奖品保存在数组$res['yes']中，
    * 而剩下的未中奖的信息保存在$res['no']中，
    * 最后输出json个数数据给前端页面。
    */
   foreach ($prize_arr as $key => $val) { 
       $arr[$val['id']] = $val['v']; 
   } 
   $rid = $this->get_rand($arr); //根据概率获取奖项id 

   $res['yes'] = $prize_arr[$rid-1]['prize']; //中奖项 
   unset($prize_arr[$rid-1]); //将中奖项从数组中剔除，剩下未中奖项 
   shuffle($prize_arr); //打乱数组顺序 
   for($i=0;$i<count($prize_arr);$i++){ 
       $pr[] = $prize_arr[$i]['prize']; 
   } 
   $res['no'] = $pr; 
   print_r($res); 
}



    
    
    
    
    
}
